#include "system.h"

/**
 * @brief       微秒级延时函数
 * @note      	微秒级延时函数，用于触摸屏和LCD的驱动时序中
 * @param       udelay（uint32_t）：延时时长，单位us，不能大于1000
 * @retval      无
 */
void HAL_Delay_us(uint32_t udelay)
{
  uint32_t startval,tickn,delays,wait;

  startval = SysTick->VAL;
  tickn = HAL_GetTick();
  //sysc = 72000;  //SystemCoreClock / (1000U / uwTickFreq);
  delays =udelay * 72; //sysc / 1000 * udelay;
  if(delays > startval)
    {
      while(HAL_GetTick() == tickn)
        {

        }
      wait = 72000 + startval - delays;
      while(wait < SysTick->VAL)
        {

        }
    }
  else
    {
      wait = startval - delays;
      while(wait < SysTick->VAL && HAL_GetTick() == tickn)
        {

        }
    }
}

int absint(int a)
{
	if(a>=0)return a;
	return -a;
}

float absfloat(float a)
{
	if(a>=0)return a;
	return -a;
}
void systemUIshow(void)
{
	uidraw(-1);
}


void systemTask(void)
{
	switch(getTouchCode(0))//功能主菜 ??
  {
	case 1 : uidraw(1); break;
	case 2 : uidraw(2); break;
	case 3 : uidraw(3); break;
	case 4 : changeRaspiMood(RASRECTANGLE);uidraw(4); break;
	//case 5 : uidraw(5); break;
	//case 6 : uidraw(6); break;
	default :  ;
  }
  switch(getTouchCode(1))//自由控制任务
  {
	case 1 : CO.fineunit = 1;   break;  //1unit
	case 2 : CO.fineunit = 5;   break;  //2unit
	case 3 : CO.fineunit = 20;   break;  //5unit
	case 4 : CO.fineunit = 40;  break;  //20unit
	case 5 : goHome();   break;  //复位
	case 6 : uidraw(0);  break;  //返回主界 ??
	case 7 : CO.commonpoint.y+=CO.fineunit;  break;  //上移
	case 8 : CO.commonpoint.x-=CO.fineunit; break;  //左移
	case 9 : CO.commonpoint.x+=CO.fineunit;  break;  //右移
	case 10 :CO.commonpoint.y-=CO.fineunit; break;  //下移
  }
  switch(getTouchCode(2))//设置参数
  {
	case 1 : changeRaspiMood(RASRED);uidraw(7); break; //中心记忆
	case 2 : changeRaspiMood(RASRED);uidraw(8); break; //角点记忆
	case 3 : changeRaspiMood(SETFOVPARAM);break; //RS视野
	case 4 : changeRaspiMood(SETREDPARAM);break; //RS ??光识别参 ??
	case 5 : break; //黑框识别参数
	case 6 : HAL_UART_Transmit(&huart2, "RSM2ST", 6,200 );uidraw(0); break; //返回
	default : ;
  }
  switch(getTouchCode(3))//循外框任 ??
  {
	case 1 : setSpinSpeed(500);  break; //加 ??
	case 2 : setSpinSpeed(-500); break; //减 ??
	case 3 : trackStart(); break; //循外 ??
	case 4 : CO.pauseFlag = !CO.pauseFlag; break; //暂停
	case 5 : goHome();  break; //复位
	case 6 : uidraw(0); break; //返回
	default : ;
  }
  switch(getTouchCode(4))//循黑框任 ??
  {
	case 1 : setSpinSpeed(500);  break; //加 ??
	case 2 : setSpinSpeed(-500); break; //减 ??
	case 3 : break; //循黑 ??
	case 4 : CO.pauseFlag = !CO.pauseFlag; break; //暂停
	case 5 : goHome();  break; //复位
	case 6 : HAL_UART_Transmit(&huart2, "RSM2ST", 6,200 );uidraw(0); break; //返回
	default : ;

  }
  switch(getTouchCode(5))
  {
	case 6 : uidraw(0); break; //返回
	default : ;
  }
  switch(getTouchCode(6))
  {
	case 6 : uidraw(0); break; //返回
	default : ;
  }
	switch(getTouchCode(7))//中心记忆
	{
	  case 1 : CO.fineunit = 1;   break;  //1unit
	  case 2 : CO.fineunit = 5;   break;  //2unit
	  case 3 : CO.fineunit = 20;   break;  //5unit
	  case 4 : CO.fineunit = 40;  break;  //20unit
	  case 5 : setPulseOrigin();  break; //确认设置，并记忆中心 ??
	  case 6 : uidraw(2); break; //返回
	  case 7 : CO.commonpoint.y+=CO.fineunit;  break;  //上移
	  case 8 : CO.commonpoint.x-=CO.fineunit; break;  //左移
	  case 9 : CO.commonpoint.x+=CO.fineunit;  break;  //右移
	  case 10 :CO.commonpoint.y-=CO.fineunit; break;  //下移
	  default : ;
	}
	switch(getTouchCode(8))//设置角点位置
	{
	  case 1 : break;  //1unit
	  case 2 : break;  //5unit
	  case 3 : break;  //20unit
	  case 4 : break;  //切换
	  case 5 : break;  //确认设置角点
	  case 6 : uidraw(2); break; //返回
	  case 7 : break;  //上移
	  case 8 : break;  //左移
	  case 9 : break;  //右移
	  case 10 :break;  //下移
	  default : ;
	}
}


